package x.x.x;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapReferenceValueChangeNoPutAgain {

    /**
     * 
     * 测试目的:针对Map中的Value是引用类型的,
     * 如果引用类型的值被改变,如:list添加或删除了元素
     * 不需要Map中Key对应的Value再次put
     * 
     *@author hanxy17
     * 如修改方法体请自行修改作者信息
     * 当前作者只对自己编写内容负责
     *
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<String> lists = new ArrayList<String>();
        lists.add("s");
        Map<Integer,List<String>> map = new HashMap<Integer, List<String>>();
        map.put(1, lists);
        System.err.println(map.get(1));
        lists.add("e");
        System.err.println(map.get(1));
        /*
         * 注意,此时只是让lists和listGetForMap同时指向一个地址,
         * 而改变listGetForMap的指向时并不会改变lists
         * 只是重新为listGetForMap赋值了,
         * 但是如果不是重新为listGetForMap赋值而是对listGetForMap进行常规操作,
         * 则改变了listGetForMap所指向地址的内容
         * 
         */
        List<String> listGetForMap = map.get(1);
        listGetForMap.add("listGetForMap");
        System.err.println(map.get(1));
        listGetForMap = null;
        System.err.println(listGetForMap);
        System.err.println(map.get(1));
        
    }

}
